#include<iostream>
#include<algorithm>
#include<queue>

using namespace std;

const int N=1e5+10,INF=1e9+7;

int h[N],e[N],ne[N],w[N],idx;
int dist[N],n,m;
bool st[N];


void add(int a,int b,int c)
{
	e[idx]=b;
	w[idx]=c;
	ne[idx]=h[a];
	h[a]=idx++;
}


void spfa()
{
	fill(dist,dist+N,INF);
	dist[1]=0;
	
	queue<int> q;
	q.push(1);
	st[1]=true;
	
	while(q.size()){
		int t=q.front();
		q.pop();
		st[t]=false;
		
		for(int i=h[t];i!=-1;i=ne[i]){
			int j=e[i];
			if(dist[j]>dist[t]+w[i]){
				dist[j]=dist[t]+w[i];
				if(!st[j]){
					q.push(j);
					st[j]=true;
				}
			}
		}
	}
}


int main()
{
	scanf("%d%d",&n,&m);
	fill(h,h+N,-1);
	
	while(m--){
		int a,b,c;
		scanf("%d%d%d",&a,&b,&c);
		add(a,b,c);
	}
	
	spfa();
	
	if(dist[n]==INF) printf("impossible");
	else  printf("%d",dist[n]);
	
	return 0;
}
